from flask_wtf import FlaskForm
from wtforms import StringField, TextAreaField, SelectField, \
    IntegerField, FloatField, FileField, BooleanField, PasswordField

import contants

class LoginForm(FlaskForm):
    """登录表单"""
    username = StringField(label="用户名", render_kw={
        'class': 'form-control',
        'placeholder': '请输入用户名'
    })
    password = PasswordField(label="密码", render_kw={
        'class': 'form-control',
        'placeholder': '请输入密码'
    })
    def validate_username(self, field):
        username = field.data
        # todo 验证
        return username

class ProductEditForm(FlaskForm):
    """新增商品表单"""
    # 商品标题
    name = StringField(label="商品标题", render_kw={
        'class': 'form-control',
        'placeholder': '请输入商品标题'
    }, description='商品文字不超过50字')
    # 商品描述 （富文本）
    content = TextAreaField(label="商品描述", render_kw={
        'class': 'form-control',
        'placeholder': '请输入商品描述'
    }, description='商品描述不超过200字')
    # 商品推荐语
    desc = StringField(label="商品推荐语", render_kw={
        'class': 'form-control',
        'placeholder': '请输入商品推荐语'
    }, description='商品推荐语不超过20字')
    # 类型
    types = SelectField(label="商品类型",
                        choices=contants.PRODUCT_TYPES, render_kw={
        'class': 'form-control',
        'placeholder': '请输入商品类型'
    })
    # 价格
    price = IntegerField(label="销售价格", render_kw={
        'class': 'form-control',
        'placeholder': '请输入销售价格'
    })
    # 原价￥
    origin_price = FloatField(label="商品原价", render_kw={
        'class': 'form-control',
        'placeholder': '请输入商品原价'
    })
    # 主图
    img = FileField(label="商品主图")
    # 渠道
    channel = StringField(label="商品渠道", render_kw={
        'class': 'form-control',
        'placeholder': '请输入商品渠道'
    })
    # 链接
    buy_link = StringField(label="商品链接", render_kw={
        'class': 'form-control',
        'placeholder': '请输入商品链接'
    })
    # 商品状态
    status = SelectField(label="商品状态",
                         choices=contants.PRODUCT_STATUS, render_kw={
        'class': 'form-control',
        'placeholder': '请输入商品状态'
    })
    # 剩余库存
    remain_count = IntegerField(label="剩余库存", render_kw={
        'class': 'form-control',
        'placeholder': '请输入剩余库存'
    })
    # 库存
    sku_count = IntegerField(label="库存", render_kw={
        'class': 'form-control',
        'placeholder': '请输入库存'
    })
    # 浏览次数
    view_count = IntegerField(label="浏览次数", render_kw={
        'class': 'form-control',
        'placeholder': '请输入浏览次数'
    })
    # 评分
    score = IntegerField(label="评分", render_kw={
        'class': 'form-control',
        'placeholder': '请输入评分'
    })
    # 逻辑删除
    is_valid = BooleanField(label="逻辑删除")
    # 排序
    reorder = IntegerField(label="排序", render_kw={
        'class': 'form-control',
        'placeholder': '请输入排序'
    })
